1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 import java.awt.Color;
43 import java.awt.Dimension;
44 import java.awt.Font;
45 import java.awt.FontMetrics;
46 import java.awt.Graphics;
47 import java.util.StringTokenizer;
48 import java.util.Timer;
49 import java.util.TimerTask;
50
51
52 public class Blink extends java.applet.Applet {
53
54 private static final long serialVersionUID = -775844794477507646L;
55 private Timer timer;
56 private String labelString;
57 private int delay;
58
59 @Override
60 public void init() {
61 String blinkFrequency = getParameter("speed");
62 delay = (blinkFrequency == null) ? 400
63 : (1000 / Integer.parseInt(blinkFrequency));
64 labelString = getParameter("lbl");
65 if (labelString == null) {
66 labelString = "Blink";
67 }
68 Font font = new java.awt.Font("Serif", Font.PLAIN, 24);
69 setFont(font);
70 }
71
72 @Override
73 public void start() {
74 timer = new Timer();
75 timer.schedule(new TimerTask() {
76
77
78 @Override
79 public void run() {
80 repaint();
81 }
82 }, delay, delay);
83 }
84
85 @Override
86 public void paint(Graphics g) {
87 int fontSize = g.getFont().getSize();
88 int x = 0, y = fontSize, space;
89 int red = (int) (50 * Math.random());
90 int green = (int) (50 * Math.random());
91 int blue = (int) (256 * Math.random());
92 Dimension d = getSize();
93 g.setColor(Color.black);
94 FontMetrics fm = g.getFontMetrics();
95 space = fm.stringWidth(" ");
96 for (StringTokenizer t = new StringTokenizer(labelString);
97 t.hasMoreTokens();) {
98 String word = t.nextToken();
99 int w = fm.stringWidth(word) + space;
100 if (x + w > d.width) {
101 x = 0;
102 y += fontSize;
103 }
104 if (Math.random() < 0.5) {
105 g.setColor(new java.awt.Color((red + y * 30) % 256,
106 (green + x / 3) % 256, blue));
107 } else {
108 g.setColor(getBackground());
109 }
110 g.drawString(word, x, y);
111 x += w;
112 }
113 }
114
115 @Override
116 public void stop() {
117 timer.cancel();
118 }
119
120 @Override
121 public String getAppletInfo() {
122 return "Title: Blinker\n"
123 + "Author: Arthur van Hoff\n"
124 + "Displays multicolored blinking text.";
125 }
126
127 @Override
128 public String[][] getParameterInfo() {
129 String pinfo[][] = {
130 { "speed", "string", "The blink frequency" },
131 { "lbl", "string", "The text to blink." }, };
132 return pinfo;
133 }
134 }